package com.starsea.book.ui.newpage.adapter

import android.content.Context
import android.text.TextUtils
import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager
import com.starsea.book.base.adapter.ItemViewHolder
import com.starsea.book.base.adapter.RecyclerAdapter
import com.starsea.book.databinding.ItemWelfareBinding
import com.starsea.book.ui.newpage.entity.WelfareTaskListEntity
import com.starsea.book.ui.newpage.normalview.RadiusTextView
import com.starsea.book.ui.newpage.utils.finialDouble
import com.starsea.book.ui.widget.recycler.ItemTouchCallback
import com.starsea.book.utils.gone
import com.starsea.book.utils.visible

class HomeWelfareAdapter(
    var mContext: Context,
    var onChanged: ((value: WelfareTaskListEntity) -> Unit)? = null
) :
    RecyclerAdapter<WelfareTaskListEntity, ItemWelfareBinding>(mContext),
    ItemTouchCallback.Callback {


    override fun getViewBinding(parent: ViewGroup): ItemWelfareBinding {
        return ItemWelfareBinding.inflate(inflater, parent, false)
    }

    override fun registerListener(holder: ItemViewHolder, binding: ItemWelfareBinding) {
        binding.root.setOnClickListener {
            getItem(holder.layoutPosition - 1)?.let {
                onChanged!!.invoke(it)
            }
        }

        binding.rtvConfim.setOnClickListener {
            getItem(holder.layoutPosition - 1)?.let {
                onChanged!!.invoke(it)
            }
        }

    }

    override fun convert(
        holder: ItemViewHolder,
        binding: ItemWelfareBinding,
        item: WelfareTaskListEntity,
        payloads: MutableList<Any>
    ) {
        binding.run {
            tvTitle.text = getTitle(item.ruleType ?: 0)
            setBtn(item.ruleType ?: 0, rtvConfim)
            tvCoin.text =

                if (item.ruleType == 16) {
                    "海量金币"
                } else if (item.ruleType == 17 || item.ruleType == 2 || item.ruleType == 15) {
                    "惊喜大奖"
                } else
                    if (TextUtils.isEmpty(item.amount)) {
                        "最高${(item.maxAmount ?: "0").toDouble().finialDouble()}金币"
                    } else {
                        if (item.amountType == 1) "${
                            (item.amount ?: "0").toDouble().finialDouble()
                        }金币" else "¥${(item.amount ?: "0").toDouble().finialDouble()}"
                    }

            tvHint.text = getSubTitle(item.ruleType ?: 0, item.startDate ?: "", item.endDate ?: "")

//            12、阅读赚金币 13、听书赚金币
            if (item.ruleType == 12 || item.ruleType == 13) {
                rvCoin.visible()
                rvTime.visible()
                llLine.visible()

                val mLineAdapter = SignReadLineAdapter(mContext)
                rvCoinLine.layoutManager = GridLayoutManager(mContext, 5)
                rvCoinLine.adapter = mLineAdapter
                val lineData = arrayListOf<String>("", "", "", "", "")
                mLineAdapter.setItems(lineData)


                val mCoinAdapter = SignReadCoinAdapter(mContext)
                rvCoin.layoutManager = GridLayoutManager(mContext, item.awardInfo!!.size)
                rvCoin.adapter = mCoinAdapter
                mCoinAdapter.setItems(item.awardInfo)


                val mTimeAdapter = SignReadTimeAdapter(mContext)
                rvTime.layoutManager = GridLayoutManager(mContext, item.awardInfo.size)
                rvTime.adapter = mTimeAdapter
                mTimeAdapter.setItems(item.awardInfo)

            } else {
                rvCoin.gone()
                rvTime.gone()
                llLine.gone()
            }


        }
    }


    fun setBtn(ruleType: Int, rtv_confim: RadiusTextView) {
//    规则类型 1、签到 2、新人7日礼包 3、新人提现 4、绑定手机号 5、首次登录
//    6、完善个人信息 7、打开签到提醒 8、打开消息通知 9、打开签到通知
//    10、打开阅读通知 11、看视频再领金币 12、阅读赚金币 13、听书赚金币
//    14、打开小程序赚金币 15、发动态奖励金币 16、幸运大转盘 17、幸运7连抽
//    18、知识答题奖励现金 19、首次加入书架 20、开宝箱
        when (ruleType) {
            1 -> {
//                "签到"
                rtv_confim.text = "立即签到"
            }

            2 -> {
//                "新人7日礼包"
                rtv_confim.text = "去领奖"
            }

            3 -> {
//                "新人提现"
            }

            4 -> {
//                "绑定手机号"
                rtv_confim.text = "去完成"
            }

            5 -> {
//                "首次登录"
                rtv_confim.text = "去登录"
            }

            6 -> {
//                "完善个人信息"
                rtv_confim.text = "去完成"
            }

            7 -> {
                "打开签到提醒"
                rtv_confim.text = "去开启"
            }

            8 -> {
//                "打开消息通知"
                rtv_confim.text = "去开启"
            }

            9 -> {
//                "打开签到通知"
                rtv_confim.text = "去开启"
            }

            10 -> {
//                "打开阅读通知"
                rtv_confim.text = "去开启"
            }

            11 -> {
//                "看视频再领金币"
                rtv_confim.text = "去完成"
            }

            12 -> {
//                "阅读赚金币"
                rtv_confim.text = "去完成"
            }

            13 -> {
//                "听书赚金币"
                rtv_confim.text = "去完成"
            }

            14 -> {
//                "打开小程序赚金币"
                rtv_confim.text = "去打开"
            }

            15 -> {
//                "发动态奖励金币"
                rtv_confim.text = "去发布"
            }

            16 -> {
//                "幸运大转盘"
                rtv_confim.text = "去抽奖"
            }

            17 -> {
//                "幸运7连抽"
                rtv_confim.text = "去抽奖"
            }

            18 -> {
//                "知识答题奖励现金"
                rtv_confim.text = "去完成"
            }

            19 -> {
//                "首次加入书架"
                rtv_confim.text = "去选书"
            }

            20 -> {
//                "开宝箱"
                rtv_confim.text = "去完成"
            }

            else -> {
                rtv_confim.text = "去完成"
            }
        }
    }

    fun getTitle(ruleType: Int): String {
//    规则类型 1、签到 2、新人7日礼包 3、新人提现 4、绑定手机号 5、首次登录
//    6、完善个人信息 7、打开签到提醒 8、打开消息通知 9、打开签到通知
//    10、打开阅读通知 11、看视频再领金币 12、阅读赚金币 13、听书赚金币
//    14、打开小程序赚金币 15、发动态奖励金币 16、幸运大转盘 17、幸运7连抽
//    18、知识答题奖励现金 19、首次加入书架 20、开宝箱
        return when (ruleType) {
            1 -> "签到"
            2 -> "新人7日礼包"
            3 -> "新人提现"
            4 -> "绑定手机号"
            5 -> "首次登录"
            6 -> "完善个人信息"
            7 -> "打开签到提醒"
            8 -> "打开消息通知"
            9 -> "打开签到通知"
            10 -> "打开阅读通知"
            11 -> "看视频再领金币"
            12 -> "阅读赚金币"
            13 -> "听书赚金币"
            14 -> "打开小程序赚金币"
            15 -> "发动态奖励金币"
            16 -> "幸运大转盘"
            17 -> "幸运7连抽"
            18 -> "知识答题奖励现金"
            19 -> "首次加入书架"
            20 -> "开宝箱"
            else -> {
                ""
            }
        }
    }

    fun getSubTitle(ruleType: Int, startDate: String, endDate: String): String {
//    规则类型 1、签到 2、新人7日礼包 3、新人提现 4、绑定手机号 5、首次登录
//    6、完善个人信息 7、打开签到提醒 8、打开消息通知 9、打开签到通知
//    10、打开阅读通知 11、看视频再领金币 12、阅读赚金币 13、听书赚金币
//    14、打开小程序赚金币 15、发动态奖励金币 16、幸运大转盘 17、幸运7连抽
//    18、知识答题奖励现金 19、首次加入书架 20、开宝箱
        return when (ruleType) {
            1 -> "签到"
            2 -> "${startDate}-${endDate}每天登录可领取"
            3 -> "新人提现"
            4 -> "绑定手机号"
            5 -> "首次登录领好礼"
            6 -> "完善个人信息领好礼"
            7 -> "每日提醒不漏签"
            8 -> "更多精彩内容和福利活动不容错过"
            9 -> "若当天未签到，17点提醒"
            10 -> "若当天未阅读，19点提醒"
            11 -> "看视频再领金币"
            12 -> "阅读赚金币"
            13 -> "听书赚金币"
            14 -> "打开小程序赚金币"
            15 -> "每天可以发布3条动态来获得金币"
            16 -> "拼手气，抽大奖，最高可得10万金币"
            17 -> "天天抽好礼，华为手机等惊喜大奖免费送"
            18 -> "知识答题奖励现金"
            19 -> "任选1本喜欢的书加入书架"
            20 -> "开宝箱"
            else -> {
                ""
            }
        }
    }


}